Tom,
Quite right, I did mean to do an INSERT. Changing the script to do so though I still get the error:
ERROR: gb_gb_id_seq.currval is not yet defined in this session.
foreach $id(sort keys %ACCN) {
$conn->exec(
"INSERT INTO gb (clone_id,accn,gi) VALUES ( '$ACCN{$id}{clone_id}','$ACCN{$id}{gb}','$ACCN{$id}{gi}')";
);
$result = $conn->exec("SELECT currval('gb_gb_id_seq');");
die $conn->errorMessage unless PGRES_TUPLES_OK eq $result->resultStatus;
$gb_id = $result->fetchrow;
$ACCN{$id}{gb_id} = $gb_id;
}
Charles Hauser <chauser@duke.edu> writes:
> foreach $id(sort keys %ACCN) {
> $conn->exec(
> "UPDATE gb SET accn_no = '$ACCN{$id}{gb}',gi_no =
> '$ACCN{$id}{gi}' WHERE clone_id = '$ACCN{$id}{clone_id}'"
> );
> $result = $conn->exec("SELECT currval('gb_gb_id_seq');");
This isn't inserting any new row, so nextval() isn't called, so there's
nothing for currval() to work on. Are you sure you did not mean to do
an INSERT?
If you did want an UPDATE, seems like you could do
SELECT gb_id FROM gb WHERE clone_id = '$ACCN{$id}{clone_id}'
regards, tom lane
--
Regards,
Chuck